/*
funcion para determinar que series puede imprimir cada usuario por tipo de documento
parametros:
	codigo_documento : codigo de documento a buscar
	usuario : nombre de usuario a buscar. si no se pone, entonces se asume el usuario actual, si se pone el campo en blanco se listan todos los usuarios
ejemplos:
	ver_series(101); //listar series que puede imprimir el usuario actual
	ver_series(109,'oficina'); //listar series que puede imprimir OFICINA
	ver_series(103,''); //listar todas las series que se pueden imprimir
*/
function ver_series(codigo_documento, usuario){
	if(window.xhr){xhr.abort();}
	xhr = $.get(_WEB_ROOT + 'codigo_documentos/view/'+codigo_documento, function(data){
		if(data.length){
			tabla = '<div><table>'+$(data).find('table').html()+'</table></div>';
			$tabla = $(tabla);
			if(typeof usuario=='undefined'){
				usuario = $('#titlebar div.usuario').text().trim();
			} else {
				usuario = usuario.toUpperCase();
			}
			
			$tabla.find('tr:not(:first)')
				.find('td:eq(0)').css({'font-weight':'bold','font-size':'large'}).end()
				.find('td:eq(8):not(:contains('+usuario+'))').parent().remove();
			
			$tabla.dialog({
				title:'SERIES::'+ usuario+'  ::  '+codigo_documento,
				maxHeight:500,
				width:1000,
				height:(($tabla.find('table tr').length*21)+50),
				modal:true,
				close:function(){
					$(this).dialog('destroy').remove();
				}
			});
		}
	});
}

function opciones(){
	if(console && console.log){
		console.log(
			'show_hidden_value() -> funcion para mostrar valores de inputs ocultos', '\n',
			'hide_hidden_value() -> funcion para borrar valores de inputs ocultos', '\n',
			'cake_log() -> funcion para mostrar/ocultar log sql de cakephp', '\n',
			'show_index() -> funcion para mostrar tabindex de inputs', '\n',
			'hide_index() -> funcion para ocultar tabindex de inputs', '\n',
			'ver_series(codigo_documento, nombre_usuario) -> funcion para ver las series de documento que puede imprimir un usuario', '\n',
			'maildata() ->  funcion para obtener todos los valores de la página para enviar por correo electrónico','\n',
			'parsedata(data) -> funcion para evaluar los datos enviados por usuario por correo','\n'
		);
	} else {
		alert('show_hidden_value() -> funcion para mostrar valores de inputs ocultos'+ '\n'+
			'hide_hidden_value() -> funcion para borrar valores de inputs ocultos'+ '\n'+
			'cake_log() -> funcion para mostrar/ocultar log sql de cakephp'+ '\n'+
			'show_index() -> funcion para mostrar tabindex de inputs'+ '\n'+
			'hide_index() -> funcion para ocultar tabindex de inputs'+ '\n'+
			'ver_series(codigo_documento, nombre_usuario) -> funcion para ver las series de documento que puede imprimir un usuario'+'\n'+
			'maildata() ->  funcion para obtener todos los valores de la página para enviar por correo electrónico'+'\n'+
			'parsedata(data) -> funcion para evaluar los datos enviados por usuario por correo'+'\n'
		);
	}
}

//mostrar valores de campos hidden
function show_hidden_value(){
	hide_hidden_value();
	$('input:hidden').each(function(){$(this).after('<span class="info-hidden" style="padding:2px;background-color:pink; border:solid 1px #FF0000;color:#FF0000;width:auto;">'+ this.name + ':<i><b>' + this.value +'</b></i></span>');})
}

//ocultar valores hidden
function hide_hidden_value(){
	$('.info-hidden').remove();
}

//mostrar/ocultar cake log
function cake_log(){
	$('.cake-sql-log').toggle();
}

//mostrar tabindex de cada elemento
function show_index(){
	hide_index();
	$('[tabindex]').each(function(){$(this).after('<span class="tabindex ui-state-error" style="position:absolute; x-index:100">'+ this.tabIndex +'</span>')})
}

function hide_index(){
	$('span.tabindex').remove();
}

function maildata(){
	localStorage.maildata = maildata = JSON.stringify($('form').serializeObject());
	
	if(maildata.length>2000){
		alert(
			window.location.href+'\n\r'+
			"'"+maildata+"'");
	}else{
		mailto_user = 'mailto:'+
		escape(prompt('enviar a <usuario> de correo Corporacion ADC'))
		+'@corporacionadc.net?subject=error-'+escape(window.location.href)+
		escape(prompt('breve descripcion del error'))+'&body='+
		"'"+maildata+"'";
		window.location = mailto_user;
	}
}

function parsedata(data){
	if(typeof data === 'string'){
		nadata = JSON.parse(data);
	} else {
		nadata = data;
	}
	
	hidn_data = '';
	for(var i in nadata){
	input = $('[name='+i.replace(/\[/g,'\\[').replace(/\]/g,'\\]')+']');
		if(input.length>0){
			input.val(nadata[i]);
		} else if(nadata[i]!==''){
			hidn_data += i + ' : ' + nadata[i] + '<br>';
		}
	}
	if(hidn_data.length){
		div = $('<div id="_hdn_data" style="overflow:auto;">'+hidn_data+'</div>').dialog({
			title:'datos a insertarse manualmente',
			width:300,
			height:500,
			position:['right','top']
		});
	}
}

//EJECUTAR FIREBUG SIN NECESIDAD DEL PLUGIN DE FIREFOX
//uso para desarrollo en barra de direcciones:
//		javascript:getfirebug() o presionando Ctrl+F12
function getfirebug(){
	if(document.getElementById('FirebugLite'))
		return;
	E=document['createElement'+'NS']&&document.documentElement.namespaceURI;
	E=E?document['createElement'+'NS'](E,'script'):document['createElement']('script');
	E['setAttribute']('id','FirebugLite');
	E['setAttribute']('src',_WEB_ROOT + 'js/firebug-lite-beta.js#startOpened,enableTrace');
	E['setAttribute']('FirebugLite','4');
	(document['getElementsByTagName']('head')[0]||document['getElementsByTagName']('body')[0]).appendChild(E);
	E=new Image;
	E['setAttribute']('src',_WEB_ROOT + 'img/sprite.png');
}

//agregando tecla de acceso para firebug lite
var sc = {
	'Ctrl+F12':{
		'accion':'Abrir firebug',
		'oculto':true,
		'callback':function(){
			getfirebug();
		}
	},
	'Ctrl+F11':{
		'accion':'Mail Data',
		'oculto':true,
		'callback':function(){
			maildata();
		}
	}
};

$(function(){
	shortcuts = $.extend({}, shortcuts, sc);
	shortcut_rebind(true);
});
